//Differentiaaliyhtälöitä kuvaavien funktioiden tyyssija
//
//Joonas Koskinen
//Pro Gradu Työ
//Jyväskylän Yliopisto

#ifndef CDY
#define CDY

#include <string>
using namespace std;

class cDY {
private:
	//! Energy
	double E;
	//! Name of the differential equation
	string name;

public:
	cDY();
	virtual ~cDY();
	//! Set the initial value for energy
	void set_E(double value);
	//! Set the name of the differential equation
	void set_name(string value);
	//! Return the name of the equation
	string get_name();
	//! Retunr the current value of energy
	double get_E();
	//! The Differential Equation written in the form y''=f(x)y' + g(x)y + h(x)
	virtual double DE(double x, double V_x, double y, double dy)=0;
	//The next methods are differential equation written per component A(x), B(x) and C(x) 
	//Some methods need access to these values, for example Numerov's method.  
	virtual double f(double x, double V_x, double dy)=0;
	virtual double g(double x, double V_x, double y)=0;
	virtual double h(double x)=0;

        static const double hbar;
       	static const double atomic_me;

};

#endif
